package com.unlcn.ils.kas.service.order;

import com.unlcn.ils.kas.dao.model.order.*;

import java.util.*;

/**
 * 江铃控股订单调度 service
 * @author 罗必量
 */
public interface HoldingOrderService {

    /**
     * 拉取控股订单 1
     */
    void pushOrder1();

    /**
     * 拉取控股订单 2
     */
    void pushOrder2();

    /**
     * 获取控股订单 1
     */
    void getOrder(String startTime, String endTime);

    /**
     * 保存订单信息
     * @param orderOtdLog
     * @param orderOtdLogDetailList
     */
    String saveOrderInfo(OrderOtdLog orderOtdLog, List<OrderOtdLogDetail> orderOtdLogDetailList);

    /**
     * 保存明细
     * @param orderOtd
     * @param orderOtdLogDetailList
     */
    void saveDetail(OrderOtd orderOtd, List<OrderOtdLogDetail> orderOtdLogDetailList);

    /**
     * 计算运输距离
     * @param orderOtd
     * @param orderOtdDetail
     * @return
     */
    Number computationalDistance(OrderOtd orderOtd, OrderOtdDetail orderOtdDetail);

    /**
     * 获取两地距离
     * @param startAddress
     * @param endAddress
     * @return
     */
    Double getDistance(String startAddress, String endAddress);

    /**
     * 将ResponseEntity结果转换成map集合
     * @param result
     * @return
     */
    List<Map> getMap(String result);

    /**
     * 保存拉取订单异常
     * @param orderOtdException
     */
    void saveOrderException(OrderOtdException orderOtdException);

    /**
     * 转换跟踪订单
     * @param orderOtdLog
     * @param orderOtdList
     * @return
     */
    OrderOtd transformation(OrderOtdLog orderOtdLog, List<OrderOtd> orderOtdList);

    /**
     * 格式化在途信息
     * @param map
     * @return
     */
    OrderOtdLogDetail analysisOnWayInfo(Map map);

    /**
     * 格式化订单
     * @param map
     * @return
     */
    OrderOtdLog analysisOrder(Map map);
}
